import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import unquote
from fetch import download_large_images

def find_links_with_filter(url, filter_str):
    # 发送HTTP请求
    response = requests.get(url)
    
    # 检查请求是否成功
    if response.status_code != 200:
        raise Exception(f"Failed to load page {url}, status code: {response.status_code}")
    
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 创建一个空列表用于存放匹配的链接
    matching_links = []
    
    # 查找所有的a标签
    for link in soup.find_all('a', href=True):
        href = link['href']
        # 使用正则表达式检查链接是否为HTTP链接且包含过滤字符串
        if re.match(r'^https?://.*', href) and filter_str in href:
            # 解码URL中的中文字符
            decoded_href = unquote(href)
            matching_links.append(decoded_href)
    
    return matching_links

import re
def extract_number_from_format(input_str):
    # 定义正则表达式模式
    pattern = r'-([0-9]+)-'
    
    # 使用 re.search 查找匹配的子串
    match = re.search(pattern, input_str)
    
    # 如果找到匹配的子串，返回其中的数字部分；否则返回 None
    if match:
        return match.group(1)
    else:
        return None


import sys    
# 示例使用
if __name__ == "__main__":
    args = sys.argv
    if len(args) < 2:
        page_num = 3
    else:
        page_num = args[1]

    url = f'https://bestgirlsexy.com/page/{page_num}/?s=tang+an+qi'
    print(f'url: {url}')
    filter_str = "tang-an-qi"
    links = find_links_with_filter(url, filter_str)
    # links = ['https://bestgirlsexy.com/xiuren秀人网-no-7621-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7621-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7585-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7585-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7578-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7578-tang-an-qi/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-015-内购无水印-超劲爆/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-015-内购无水印-超劲爆/', 'https://bestgirlsexy.com/xiuren秀人网-no-7516-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7516-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7482-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7482-tang-an-qi/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-014-内购无水印-紫色内衣配超薄黑丝/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-014-内购无水印-紫色内衣配超薄黑丝/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-013-内购无水印-瑜伽裤丁字裤/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-013-内购无水印-瑜伽裤丁字裤/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-012-内购无水印-国航空姐/', 'https://bestgirlsexy.com/tang-an-qi-唐安琪-vol-012-内购无水印-国航空姐/', 'https://bestgirlsexy.com/xiuren秀人网-no-7439-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7439-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7405-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7405-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7369-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7369-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7333-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7333-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7298-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7298-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7264-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7264-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7232-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7232-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7197-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7197-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7166-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7166-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7129-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7129-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7091-tang-an-qi/', 'https://bestgirlsexy.com/xiuren秀人网-no-7091-tang-an-qi/']
    for link in links:
        link_index = extract_number_from_format(link)
        save_path = f'./images/{filter_str}/{link_index}'
        print(f'linkindex: {link_index}, link: {link}')
        download_large_images(link, save_path, f'{link_index}')